home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / internet / irc_i_dodatki / kuang / kuangeleven28.lha / Rexx / handleflood.amirx < prev    next >
Text File  |  1997-03-09  |  2KB  |  50 lines

  1. /*  K¹¹ 2.8 HandleFlood
  2. *   Requires AmIRC 1.33!
  3. */
  4. options results
  5. parse arg ':'nick'!'user'@'host' 'type' 'channel .
  6. user=strip(user,'L','~')
  7. if getclip('st_lastig')==host then exit
  8. else setclip('st_lastig',host)
  9. 'SAY /IGNORE *!*@'host 'PRIV CTCP'
  10. "getservername"
  11. s=upper(result)
  12. s=pos('UNDERNET',s)+pos('GALAXYNET',s)+pos('DAL.NET',s)
  13. if s~=0 then 'raw silence +*!*@'host
  14. m=getclip('sc_floodmsg')
  15. type=upper(type) 'flood'
  16. if left(channel,1)='#' then do
  17.     hs=user'@'host
  18.     "GETMYNICK"
  19.     mynick=result
  20.     "GETUSERS CHANNEL" channel
  21.     us=result
  22.     if getclip('sc_prot')='ON'&find(us,'@'mynick)~==0&chanpass()&gethost(mynick)~=hs then do
  23.         cn=0;nx=''
  24.         'RAW MODE' channel '+n-o+b' nick '*!*@'host
  25.         do i=1 to words(us)
  26.             nk=strip(word(us,i),'L','@+')
  27.             if gethost(nk)=hs then do
  28.                 cn=cn+1
  29.                 nx=nx nk
  30.                 'RAW KICK' channel nk ':'m
  31.             end
  32.         end
  33.         if nx~='' then cecho(cn 'clones flooding' channel ':'nx)
  34.     end
  35.     type='Channel' type
  36. end
  37. if m~='' then 'RAW NOTICE' nick ':'m
  38. i=getclip('sc_ig_count')
  39. nick=x2c(2)||nick||x2c(2) '[' x2c(2)||host||x2c(2) ']'
  40. cecho(type 'detected from' nick'. Ignoring for' x2c(2)||i||x2c(2) 'minute(s)')
  41. delay(i*3000)
  42. 'SAY /unignore *!*@'host
  43. if s~=0 then 'raw silence -*!*@'host
  44. if getclip('st_lastig')=host then setclip('st_lastig')
  45. cecho('Ignore on' nick 'timed-out')
  46. exit
  47. cecho:;"ECHO P="d2c(27)"b«FloodProt» C=2" arg(1)'.';return 0
  48. gethost:;"USERHOST" arg(1);return result
  49. chanpass:;achan=getclip('sc_autochannels');if achan=='ALL' then return 1;if find(achan,upper(channel))~==0 then return 1;return 0
  50.